package main

import (
	"database/sql"
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

//gorm demo03 默认值

// Student 1.定义模型
type Student struct {
	ID     int64
	Name   string         `gorm:"default:'匿名'` //设置默认值，如果该字段为空，则默认值为 匿名
	Age    *int64         `gorm:default:18`    //使用了 指针方式 实现 零值存入数据库~~~~~~~~~~~~~~~~~~~~~~~~~~
	Gender sql.NullString `gorm:default:"女"`   //使用了 Scanner/Valuer接口方式 实现零值存入数据库~~~~~~~~~~~~~~~~~~~~~~~~（sql.NullString 实现了 Scanner/Valuer接口）
}

func main() {
	//2.连接 MySQL 数据库
	db, err := gorm.Open("mysql", "root:123456@(127.0.0.1:3306)/db1?charset=utf8mb4&parseTime=True&loc=Local")
	if err != nil {
		panic(err)
	}
	defer db.Close()

	//3.将模型 与 数据库中的 表 对应起来
	db.AutoMigrate(&Student{})

	//4.创建
	var age int64 = 36
	s := Student{Name: "htl", Age: &age} //在代码层面创建一个 User对象
	fmt.Println(db.NewRecord(&s))        //判断主键是否为空 true：是一条新的记录
	db.Create(&s)                        //在数据库中创建记录
	fmt.Println(db.NewRecord(&s))        //判断主键是否为空 false：该记录已经存入到数据库中了
}
